home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / dierol1a / roller1.bas < prev   
BASIC Source File  |  1999-01-11  |  3KB  |  84 lines

  1. Attribute VB_Name = "Module1"
  2. 'ROLLER1.BAS
  3. '
  4. 'By Timothy J. Mitchell, CompuServe 71461,303
  5. '
  6. 'Last Modified 26June94
  7. '
  8. 'This module was inspired by the VISUAL BASIC WORKSHOP column in the May 1994
  9. 'issue of Britain's PC PLUS magazine (pg 296), which introduced me to the joys
  10. 'of the BitBlt API call.
  11. '
  12. 'To use the Dice, place the dice bitmap (dice.bmp) in a PictureBox on the
  13. 'form. You can hide it by pulling the side of the form over it (see
  14. 'Roller1.FRM) in the example. Place more PictureBoxes on the form, one for
  15. 'each of the die you want to show.
  16. '
  17. 'Display the dice by calling the following subroutine:
  18. '
  19. 'ShowDie (Source, Target, Digit, Color)
  20. '
  21. '   where   Source is the PictureBox containing the Dice Bitmap (dice.bmp)
  22. '           Target is the PictureBox that will contain the displayed die
  23. '           Digit is an integer between 1 and 6 referring to the die face
  24. '           Color is an integer between 1 and 3 referring to the die color
  25. '
  26. '
  27. 'To use the Numbers, place the Number bitmap (Num.bmp) in a PictureBox on
  28. 'the form. You can hide it by pulling the side of the form over it (see
  29. 'Roller1.FRM) in the example. place more PictureBoxes on the form, one for
  30. 'each Digit you want to show.
  31. '
  32. 'Display the numbers by calling the following subroutine:
  33. '
  34. 'ShowNum (Source, Target, Digit, Color)
  35. '
  36. '   where   Source is the PictureBox containing the Number Bitmap (num.bmp)
  37. '           Target is the PictureBox that will contain the displayed digit
  38. '           Digit is an integer between 0 and 9 referring to the value
  39. '           Color is an integer between 1 and 3 referring to the color
  40. '
  41. '
  42. ' Note: Make sure you set the AUTOREDRAW property of the hidden
  43. ' PictureBox(es) to TRUE or the graphics repaints won't work correctly.
  44. '
  45. Option Explicit
  46.  
  47. 'Declare API call BitBlt
  48.  
  49. Global Const SRCCOPY = &HCC0020
  50. Declare Function BitBlt Lib "GDI" (ByVal hDestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal dwRop As Long) As Integer
  51.  
  52. Global res As Integer  'Holder for Funtion BitBlt result
  53.  
  54. Sub Method1(A As Integer, B As Integer, C As Integer)
  55. '
  56. 'Rolls a set of 5 dice by randomly determining the result and
  57. 'calling Sub ShowDie
  58. '
  59.     
  60.     Randomize               'get a random number between 1 and 6 for each
  61.     A = Int(6 * Rnd + 1)    'die
  62.     Randomize
  63.     B = Int(6 * Rnd + 1)
  64.     Randomize
  65.     C = Int(6 * Rnd + 1)
  66.  
  67. Return
  68.  
  69. End Sub
  70.  
  71. Sub ShowDie(Source As PictureBox, Target As PictureBox, Digit As Integer, Color As Integer)
  72.     '
  73.     'this subroutine clips a die face from the bitmap in SOURCE and
  74.     'puts it in TARGET
  75.     'PLEASE note that these two Parameters are reversed from Sub ShowNum because
  76.     'the two SOURCE bitmaps are oriented differently. That is, the dice bitmap
  77.     'is set up with the colors accross the top and the numbers down and the
  78.     'number bitmap the opposite way.
  79.     '                                                  |---------------| |---------------|
  80.     res = BitBlt(Target.hDC, 0, 0, 32, 32, Source.hDC, 32 * (Color - 1), 32 * (Digit - 1), SRCCOPY)
  81.     Target.Refresh
  82.  
  83. End Sub
  84.